//package work.rightAnswer;
//
//import java.util.ArrayList;
//import java.util.List;
//
//class Solution_54 {
//    public List<Integer> spiralOrder(int[][] matrix) {
//        //主要在于最后一次遍历的特殊情况，只有一行或一竖（left==right或者up==down），会出现折返现象
//        //为了防止这种特殊情况导致没有遍历完的情况，注意两个点：
//        //1.在右向下遍历时，遍历满，不要留空
//        //2.在left==right或up==down时，不要执行向左向上，防止折返重复遍历
//        int left = 0;
//        int right = matrix[0].length-1;
//        int up = 0;
//        int down = matrix.length-1;
//
//
//        List<Integer> res = new ArrayList<>();
//        while (left<=right&&up<=down){
//
//            for (int col = left; col <= right; col++){
//                res.add(matrix[up][col]);
//            }
//
//            for (int row = up+1; row <= down ; row++) {
//                res.add(matrix[row][right]);
//            }
//            //2.在left==right或up==down时，不要执行向左向上，防止折返重复遍历
//            if(left<right&&up<down){
//                for (int col = right-1; col > left; col--) {
//                    res.add(matrix[down][col]);
//                }
//
//                for (int row = down; row > up; row--) {
//                    res.add(matrix[row][left]);
//                }
//            }
//
//            left++;
//            up++;
//            right--;
//            down--;
//        }
//
//        return res;
//    }
//}